package loginlog

import (
	"context"
	publicv1 "devops-super/api/public/v1"
	"devops-super/internal/model/mymodel"
	"devops-super/utility/util/ipUtil"
	"github.com/gogf/gf/v2/frame/g"
)

func (l *LoginLogLogic) DoLoginLog(ctx context.Context, req *publicv1.LoginReq, status int) (err error) {
	// status登录状态（0成功 1失败）
	// 获取客户端IP
	ip := ipUtil.GetClientIp(ctx)

	// 获取地理位置
	location := ipUtil.GetCityByIp(ip)

	// 获取User-Agent
	userAgent := ipUtil.GetUserAgent(ctx)

	// 解析浏览器和操作系统
	browser, os := ipUtil.ParseUserAgent(userAgent)

	msg := "success"
	if status != 0 {
		msg = "fail"
	}
	// 构建登录日志结构体
	loginLog := &mymodel.LoginLog{
		UserName:      req.Username,
		IpAddr:        ip,
		LoginLocation: location,
		Browser:       browser,
		Os:            os,
		Status:        status,
		Msg:           msg,
	}
	// 调用Add方法保存登录日志
	_, err = l.Add(ctx, loginLog)
	if err != nil {
		g.Log().Error(ctx, "保存登录日志失败:", err)
		// 记录日志失败不影响登录流程，只记录错误
		return nil
	}
	return nil
}
